/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package educar.abmUsuario;

import educar.models.User;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import javax.swing.JOptionPane;

/**
 * En esta clase se encuentran los metodos necesarios para modificar un usuario 
 * ya existente en el sistema.
 * @author Flubber
 */
public class ModificarUserController implements ActionListener {

    //Atributo que permite abrir una ventana con los datos del usuario
    //Ventana Reutilizada
    private AgregarUserView agregarUserView;
    
    //Arreglo usado para almacenar los datos de un usuario: username, password y rol del mismo
    private String vector[] = new String[3];    
    
    //Este atributo se utiliza como parametro del constructor para que cuando se cierren la ventana actual 
    //volvemos a la ventana anterio(queda visible la ventana que estaba oculta).
    private UserController userControl;
    
    //Atributo auxiliar usado para almacenar el numero de la fila donde se hizo
    //doble clic para modificar el usuario
    private int fila;
    
    //Atributo auxiliar para almacenar el username del usuario
    private String userName;
    
// <editor-fold defaultstate="collapsed" desc="Constructor">
    /**
     * <hr>
     * ModificarFacultadController(): contructor que recibe como parametro el controlador que lo invoco
     * <hr>
     * @param userControler 
     */
    public ModificarUserController(UserController userControler){        
        userControl = userControler;
        agregarUserView = new AgregarUserView();
        agregarUserView.setActionListener(this);
    } 
 // </editor-fold>  
    
// <editor-fold defaultstate="collapsed" desc="Action setView">    
    /**
     * <hr>
     * setView(): Hace visible a una ventana de Modificar un Usuario.
     * <hr>
     * @param registro <code>Vector</code> con los datos del usuario a ser modificado
     * @param fila <code>int</code> con la fila a modificar
     */
    public void setView(Vector registro, int fil) {
        fila = fil;
        userName = (String) registro.elementAt(1);
        agregarUserView.setTitulo("Modificar un Usuario");
        agregarUserView.setUsuario((String) registro.elementAt(1));
        agregarUserView.setPassword((String) registro.elementAt(2));
        agregarUserView.setRole((String) registro.elementAt(3));
        agregarUserView.setVisible(true);
    }
// </editor-fold>  
    
// <editor-fold defaultstate="collapsed" desc="Metodos ActionPermormed">     
    /**
     * <hr>
     * actionPerformed():metodo que recibe un evento de un boton y dependiendo de
     * este este evento puede modificar o no un usuario.
     * <hr>
     * @param e 
     */   
    @Override
    public void actionPerformed(ActionEvent e) {
        //Atributo usado para verificar procedencia (boton)          
        Object source = e.getSource();
        if (agregarUserView.getJbCancelar() == source){ //Boton Cancelar
            agregarUserView.dispose();
        }
        if (agregarUserView.getJbAceptar() == source){  //Boton Aceptar
            vector[0] = agregarUserView.getUsuario(); 
            vector[1] = agregarUserView.getPassword();
            vector[2] = agregarUserView.getRole(); 
            if (!((vector[0].length() == 0) || (vector[1].length() == 0))) {
                User user = new User(vector);                
                if (user.setUserByUsername(userName)) {                             
                            userControl.actualizarFila(vector, fila);
                            agregarUserView.dispose();
                } else {
                    JOptionPane.showMessageDialog(null,"Ya existe un registro con el nombre de usuario "+ agregarUserView.getUsuario()+".","proyecto 2012",JOptionPane.WARNING_MESSAGE);
                }
            } else {
                JOptionPane.showMessageDialog(null,"Existe al menos un campo sin completar.\n\nRevise los campos ingresados","proyecto 2012",JOptionPane.WARNING_MESSAGE);
            }
        }
    }//Fin del metodo actionPerformed()
// </editor-fold>
    
}//Fin de la clase ModificarUserController
